import numpy as np
import matplotlib.pyplot as plt

# 设置中文显示
plt.rcParams["font.family"] = ["WenQuanYi Micro Hei"]
plt.rcParams["axes.unicode_minus"] = False  # 正确显示负号

def cubic_polynomial(x, a=1, b=0, c=0, d=0):
    """三次多项式: f(x) = a*x³ + b*x² + c*x + d"""
    return a * x**3 + b * x**2 + c * x + d

def quintic_polynomial(x, a=1, b=0, c=0, d=0, e=0, f=0):
    """五次多项式: f(x) = a*x⁵ + b*x⁴ + c*x³ + d*x² + e*x + f"""
    return a * x**5 + b * x**4 + c * x**3 + d * x**2 + e * x + f

# 生成x值范围
x = np.linspace(-2, 2, 1000)  # 从-2到2生成1000个点

# 定义具体的多项式（可以修改这些系数来观察不同多项式的形状）
cubic_y = cubic_polynomial(x, a=1, b=-1, c=-5, d=3)  # 三次多项式: x³ - x² -5x + 3
quintic_y = quintic_polynomial(x, a=0.5, b=0, c=-2, d=0, e=3, f=0)  # 五次多项式: 0.5x⁵ - 2x³ + 3x

# 创建图形
plt.figure(figsize=(10, 6))

# 绘制三次多项式
plt.plot(x, cubic_y, label='三次多项式: $f(x) = x^3 - x^2 - 5x + 3$', 
         color='blue', linewidth=2)

# 绘制五次多项式
plt.plot(x, quintic_y, label='五次多项式: $f(x) = 0.5x^5 - 2x^3 + 3x$', 
         color='red', linewidth=2, linestyle='--')

# 添加标题和标签
plt.title('三次多项式与五次多项式对比', fontsize=15)
plt.xlabel('x值', fontsize=12)
plt.ylabel('f(x)值', fontsize=12)

# 添加网格和图例
plt.grid(True, linestyle='--', alpha=0.7)
plt.legend(fontsize=12)

# 添加参考线（x轴和y轴）
plt.axhline(y=0, color='k', linestyle='-', alpha=0.3)
plt.axvline(x=0, color='k', linestyle='-', alpha=0.3)

# 调整布局并显示
plt.tight_layout()
plt.show()
    